\section{块指针}
所有的数据以块为单位在磁盘和主存之间传输，
块指针（{\em block pointer}）结构用于在磁盘上寻址，校验和描述数据。
块指针是一个128位长的结构，
各位域如图\,\ref{fig:bp}\,所示。
\begin{figure}[h]
  \centering
  \includegraphics[width=\textwidth]{bp.pdf}
  \caption{块指针结构}\label{fig:bp}
\end{figure}

当磁盘充满碎片，
无法满足写入一个块的请求时，
ZFS将待写入的数据分为多个小块，
这些小块通过一个被称为{\em Gang Block}的中介块寻址，
ZFS将Gang Block返回给写入的发起者，
底下的分块和间接寻址对写入发起者而言透明。
Gang Block占用512字节，
最多容纳三个块指针，
其结构如代码段\,\ref{src:gb}\,所示。
\inputclisting{src/gb.h}
              {Gang Block结构定义}{gb}
